Scenario

GoF 패턴, 팩터리 메서드, 추상 팩토리를 동시에 탐구함
struct Point{
Point(const float x, const float y): x(x), y(y) {}
Point(const float r, const float theta){
x=r*cos(theta);
y=r*sin(theta);
}
float x, y;
};
위와 같이 일반 좌표계(cartesian coordinate)과 극 좌표계(polar coordinate) 생성자를 따로 구현해도,
위 생성자는 동일한 인자 타입을 가지고 있기 때문에 C++는 구분하지 못한다.
(Objective-C, Swift같은 프로그래밍 언어는 파라미터를 정의하는 이름으로 생성자를 오버로딩할 수 있음)

C++에서 enum을 이용해서 좌표계 오버로딩 함수를 구분할 수 있다.
enum class PointType{
cartesian,
polar
};
// (type )
Point(float a, float b, PointType type=PointType::cartesian){
if(type==PointType::cartesian){
x=a;
y=b;
} else {
x=a*cos(b);
y=a*sin(b);
}
}
변수의 이름을 지정하는 변수를 중립적으로 표현하기 위해 a, b로 바꾸었다.
이는 직관성을 떨어뜨린다.